﻿using System;

namespace ShortcutToolbox.Core
{
    public interface IShortcutToolboxController
    {
        event EventHandler<BooleanValueChangedEventArgs> OnAutoStartupChanged;
        event EventHandler<ToolBoxEventArgs> OnCheckUpdate;
        event EventHandler<BooleanValueChangedEventArgs> OnCheckUpdateOnStartChanged;
        event EventHandler<LanguageChangedEventArgs> OnLanguageChanged;
        event EventHandler<ToolBoxEventArgs> OnShowAboutForm;
        event EventHandler<ToolBoxEventArgs> OnShowConfigurationForm;
        event EventHandler<ToolBoxEventArgs> OnShowLogForm;
        event EventHandler OnStart;
        event EventHandler OnStop;

        bool CheckUpdate(object userState);
        bool ClearEventInvocations(string eventName);
        Delegate[] GetEventInvocationList(string eventName);
        bool SetAutoStart(bool autoStart);
        bool SetCheckUpdateOnStart(bool enable);
        bool SetLanguage(string name);
        bool ShowAboutForm(object userState);
        bool ShowLogForm(object userState);
        bool ShowConfigurationForm(object userState);
        void Start();
        void Stop();
    }
}